home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 6: Level 6 / 17 Bit - Level 6 (1998)(Epic Marketing)[!].iso / !applications! / symphonie / dsplugin / dsp plugin docs.txt < prev    next >
Text File  |  1994-04-11  |  7KB  |  237 lines

  1.      V 0.1 First Release
  2.  
  3. $VER V 0.2 Bug fixed in DSPGuiAnalyzer (Strings needed two zerobytes at the end instead of one !)
  4.  
  5.  
  6. -----------------------------------------------------------------------------
  7.  
  8.  
  9. The DSP PlugIn System gives programmers the ability to design DSP algorithms
  10. for MOTOROLA 68k processors. The programmers don't have to care about
  11. nothing but the dsp algorithm to implement.
  12.  
  13. It should be easy to use the DspPlugIns in other 68k Motorola
  14. Systems like AHI or Applications with minimal change to the source. :)
  15.  
  16.  
  17. You can do:
  18.  
  19. - Any type of Scopes or spectrum analyzers
  20.  
  21. - Soundcard Support plugins (Are difficult -> Sync)
  22.  
  23. - Hall, Delay, Filters, Compressors ...
  24.  
  25. - Overload analyzers, Correlation analyzers
  26.  
  27. - Denoising Systems, Declicking Systems
  28. - Smoothing algorithms
  29.  
  30. ... 
  31.  
  32.  
  33.  
  34.  
  35. To try out a DSP plugin do the following:
  36.  
  37. 1. Load Symphonie Player Pro (Symphonie Jr not yet supported for plugins)
  38. 2. Make the System Control Window as large as possible
  39. 3. Load a DSP Plugin (lower most gadgets)
  40. 4. Select |ON| to run the PlugIn
  41.  
  42.  
  43. This is just a short text. Look at it as BETA release.
  44.  
  45. Experienced programers will have no problem in finding
  46. their ways by simply examining the example sources.
  47. -----------------------------------------------------------------------------
  48.  
  49.  
  50.  
  51.  
  52.  
  53. -----------------------------------------------------------------------------
  54. The following text describes the functions of
  55. the SuperSupportTable. The SuperSupportTable is a
  56. mixed list of subjumps and data. Do never use
  57. subjumps not documented !
  58.  
  59. -----------------------------------------------------------------------------
  60.  LIBRARY SECTION : CONTAINS THE ADRESS OF SUBROUTINES
  61. -----------------------------------------------------------------------------
  62. SST_SYS_GetMem            EQU    0
  63.     ;Get Memory
  64.     ;I(A0L)(MEMBLOCK_PTR) INPUT
  65.     ;O(D0L)(0=ERROR)      OUTPUT
  66.  
  67.     ;MEMBLOCK EXAMPLE:
  68.  
  69.     memblock    dc.l    0        ;Ptr to memory (0= memory has been freed)
  70.             dc.l    1024        ;Length in Bytes
  71.             dc.l    1        ;Flags MEMF_PUBLIC = 1
  72.  
  73.     
  74. SST_SYS_FreeMem            EQU    4
  75.     ;Free Memory
  76.     ;If the memblock  has already been freed, it wont free again !
  77.     ;I(A0L)(MEMBLOCK_PTR)
  78.     ;O()
  79.  
  80. SST_FILE_RequestFileName    EQU    100
  81.     ;Get Filename using reqtools.library
  82.     ;I(A0L)(RequestText_PTR)
  83.     ;O(D0W)(0=Cancel)
  84.  
  85.  
  86. SST_FILE_SetReqPattern        EQU    104
  87.     ;Set Pattern for Filerequester
  88.     ;I(A0L)(PatternText_PTR)
  89.     ;O()
  90.     e.g. Pattern_TXT    dc.b    "#?.SymDSP",0
  91.  
  92. SST_FILE_SetReqDir        EQU    108
  93.     ;Set Filerequester path
  94.     ;I(A0L)(Dir_TXT)
  95.     
  96.  
  97. SST_FILE_GetFileName        EQU    112
  98.     ;Get requested FileName
  99.     ;I()
  100.     ;O(A0L)(Filename_PTR)
  101.  
  102. SST_FILE_GetFileLen        EQU    116
  103.     ;I(A0L)(Filename_PTR)
  104.     ;O(D0L)(FileLength in Bytes)
  105.  
  106. SST_GFX_AssistText        EQU    200
  107.     ;Print Text
  108.     ;I(A0L)(Text_PTR)
  109.     ;O()
  110.  
  111. SST_GFX_AssistDecLong        EQU    204
  112.     ;I(D0L)(Value)
  113.     ;O()
  114.     
  115. SST_GFX_AssistDecByte        EQU    208
  116.     ;I(D0B)(Value)
  117.     ;O()
  118.  
  119. SST_GFX_AssistHexLong        EQU    212
  120.     ;I(D0L)(Value)
  121.     ;O()
  122.  
  123. SST_AUDIO_GetChunkLen        EQU    400
  124.     ;O(D0L)(SampleStreamChunk Length in Samples)
  125.     ;O()
  126.     ;1 Sample = 2x16 Bit Samples = 32 Bits
  127.  
  128. -----------------------------------------------------------------------------
  129.  DATA SECTION : POINTERS TO LIBS and SCREEN
  130. -----------------------------------------------------------------------------
  131. SST_PTR_EXECBASE        EQU    1600    ;Contains PTR to EXECBASE
  132. SST_PTR_INTBASE            EQU    1604
  133. SST_PTR_DOSBASE            EQU    1608
  134. SST_PTR_ASLBASE            EQU    1612
  135. SST_PTR_REQTOOLSBASE        EQU    1616
  136. SST_PTR_GFXBASE            EQU    1620
  137.  
  138. SST_PTR_Screen            EQU    1650    ;Contains PTR to SCREEN
  139.  
  140. -----------------------------------------------------------------------------
  141.  DATA SECTION : CONTAINS DATA, some of it with realtime update from the
  142.                 SymphonieOS
  143. -----------------------------------------------------------------------------
  144. SST_ADR_ProcessorFlags        EQU    1800
  145. SST_ADR_SystemFrequency        EQU    1804
  146. SST_ADR_SystemBpm        EQU    1808
  147. SST_ADR_ChunkLen        EQU    1812    ;in Samples
  148. SST_ADR_OversampleFlag        EQU    1816
  149. SST_ADR_MaxAmplitude        EQU    1820    ;$7fff in SymPRO
  150. SST_ADR_BitPerSample        EQU    1824    ;16 for 2x16 Bit Stream
  151.  
  152. -----------------------------------------------------------------------------
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159. -----------------------------------------------------------------------------
  160. Notes:
  161. -----------------------------------------------------------------------------
  162.  
  163. Do only use PC relative Assembler. (Have a look at the example sources)
  164. You can use 020+ Opcodes.
  165.  
  166. Save it as ABSOLUTE CODE / RAW CODE !
  167. If you compile the given sources, you have to
  168. get identical PlugIns.
  169.  
  170. If you use your own windows, use GetMsg in the DSPLIB:RefreshGraph
  171. to get window messages. Don't use Wait or the System might wait twice.
  172.  
  173. Use OpenWindow in InitDSP
  174. and CloseWindow in CleanUpDSP
  175. OR
  176. Use OpenWindow in StartDSP
  177. and CloseWindow in StopDSP
  178.  
  179. All GFX Update MUST take place in RefreshGraph
  180. NOT WITHIN ProcDsp !!
  181.  
  182.  
  183. ProcDsp is called within an interrupt -> so make your
  184. algorithms as fast as possible (or even faster ) :))
  185. All interrupt limitations apply !!! Take care !
  186. Within ProcDsp you are NOT allowed to do
  187. anything but calculate some stuff - thats it.
  188. To do a scope e.g. You have to copy data to a buffer and
  189. then do the gfx stuff in RefreshGraph. The same is
  190. for very slow algorithms e.g. FFT analyzer
  191.  
  192. For advanced DSP algorithms you will most of
  193. the time have to install a ringbuffer.
  194. The Delay example does this.
  195.  
  196. The DSP GUI can only handle positive values YET.
  197.  
  198. To get memory protection do use the alloc mem free mems
  199. of the SuperSupportTable.
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207. -----------------------------------------------------------------------------
  208. This is the DSP library, all functions must be valid,
  209. they must at least point to a RTS.
  210. InitDSP and GetDspTitle also need parameters
  211. which have to be present !
  212. In ProcDsp you have to save all  registers used.
  213. -----------------------------------------------------------------------------
  214.  DSPLIB DEF
  215. -----------------------------------------------------------------------------
  216.     jmp    InitDSP(PC)        ;Allocate Mem, Build your Tables, Open Wins
  217.     jmp    CleanUpDSP(PC)        ;Free Mem, Close Wins
  218.  
  219.     jmp    ProcDsp(PC)        ;Process DSP algorithm (IN interrupt !!)
  220.  
  221.     jmp    GetDspTitle(PC)        ;Get DSP algorithm Title
  222.     jmp    ModifyValue(PC)        ;notify changed Value
  223.  
  224.     jmp    GraphSizeModify(PC)    ;notify graph size has changed (not yet implemented)
  225.     jmp    RefreshGraph(PC)    ;notify its time for a GFX update
  226.  
  227.     jmp    StartDSP(PC)        ;notify start (User pressed |ON| )
  228.     jmp    StopDSP(PC)        ;notify stop (User pressed |OFF| )
  229.     dc.l    -1            ;-1 MUST BE PRESENT
  230.  
  231.  
  232. If you find a bug in the docs or the DspPlugIn System
  233. contact Patrick_Meng@augs1.augs.use.ch
  234. Note its all beta, but its already fully functional.
  235.  
  236. The DSP PlugIn Gui for RAPID PROTOTYPING will change
  237. for sure.